﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace ProyectoDeTesis.Controladores
{
    public class PuertaEmbarqueController
    {
        public List<PuertaEmbarque> obtenerPuertasEmbarque() 
        {
            List<PuertaEmbarque> listaPuertasEmbarque = new List<PuertaEmbarque>();

            var db = new Bd_tesisDataContext();
            var query = (from pe in db.PuertaEmbarque
                         orderby pe.distancia_pista_principal ascending
                         select pe);

            listaPuertasEmbarque = query.ToList();

            return listaPuertasEmbarque;
        }

        public PuertaEmbarque obtenerPuertaEmbarquexId(int id)
        {
            var db = new Bd_tesisDataContext();
            var query = from p in db.PuertaEmbarque
                        where p.id == id
                        select p;

            return query.ToList().First();
        }

        public bool ingresarPuertaEmbarque(PuertaEmbarque pe)
        {
            var bd = new Bd_tesisDataContext();
            PuertaEmbarque puerta_embarque = new PuertaEmbarque();
            puerta_embarque.num_puerta = pe.num_puerta;
            puerta_embarque.disponible = "Si";
            puerta_embarque.estado = "Activo";

            bd.PuertaEmbarque.InsertOnSubmit(puerta_embarque);

            try
            {
                bd.SubmitChanges();
                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return false;
            }
        }

        public bool actualizarPuertaEmbarque(int num_puerta, string num_pista, double distancia)
        {
            var bd = new Bd_tesisDataContext();
            bool resultado = false;

            try
            {
                PuertaEmbarque puerta_embarque = bd.PuertaEmbarque.Single(u => u.id == num_puerta);
                puerta_embarque.pista = num_pista;
                puerta_embarque.distancia_pista_principal = distancia;

                bd.SubmitChanges();
                resultado = true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            return resultado;
        }

        public bool habilitarPuertaEmbarque(int num_puerta)
        {
            var bd = new Bd_tesisDataContext();
            bool resultado = false;
            try
            {
                var query = from pe in bd.PuertaEmbarque
                            where pe.id == num_puerta
                            select pe;
                PuertaEmbarque puerta_embarque = query.First();
                puerta_embarque.estado = "Activo";
                puerta_embarque.disponible = "Si";
                bd.SubmitChanges();
                resultado = true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            return resultado;
        }

        public bool deshabilitarPuertaEmbarque(int num_puerta)
        {
            var bd = new Bd_tesisDataContext();
            bool resultado = false;
            try
            {
                var query = from pe in bd.PuertaEmbarque
                            where pe.id == num_puerta
                            select pe;
                PuertaEmbarque puerta_embarque = query.First();
                puerta_embarque.estado = "Inactivo";
                puerta_embarque.disponible = "No";
                bd.SubmitChanges();
                resultado = true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            return resultado;
        }
    }
}
